package com.linq.cool.beauty.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.linq.cool.beauty.domain.BeautyOrder;
import com.linq.cool.beauty.domain.BeautyOrderItem;
import com.linq.cool.beauty.dto.BeautyOrderDTO;
import com.linq.cool.beauty.dto.BeautyOrderQueryDTO;
import com.linq.cool.beauty.vo.statistical.StatisticalVO;

import java.util.List;

/**
 * @Author: yqlin
 * @Date: 2021/2/11 00:34
 * @Description:
 * @Version: 1.0.0
 */

public interface BeautyOrderService extends IService<BeautyOrder> {

    /**
     * 创建订单
     *
     * @param dto
     */
    Long createOrder(BeautyOrderDTO dto);

    /**
     * 分页查询
     *
     * @param page
     * @param dto
     *
     * @return
     */
    IPage<BeautyOrder> listByPage(IPage<BeautyOrder> page, BeautyOrderQueryDTO dto);

    /**
     * 分页获取客户的所有订单信息
     *
     * @param page
     * @param dto  信息
     *
     * @return
     */
    IPage<BeautyOrder> listMemberOrdersByPage(IPage<BeautyOrder> page, BeautyOrderQueryDTO dto);

    /**
     * 客户取消订单
     *
     * @param orderId
     */
    void cancelMemberOrder(Long orderId);

    /***
     * 查询当前客户的所有订单项
     * @param orderId
     * @return
     */
    List<BeautyOrderItem> getMemberOrderItems(Long orderId);

    /**
     * 订单确认付款
     *
     * @param orderId
     */
    void confirmMemberOrderPay(Long orderId);

    /**
     * 确认已经服务
     *
     * @param orderId
     */
    void confirmMemberOrder(Long orderId);

    /**
     * 定时任务使用
     * 更新订单状态已经完成
     */
    void autoConfirmMemberOrderFinish();

    /**
     * 月订单统计
     *
     * @return
     */
    List<StatisticalVO> statisticMonthOrder();

    /**
     * 客户月统计订单
     *
     * @param memberId
     *
     * @return
     */
    List<StatisticalVO> statisticMemberMonthOrder(Long memberId);
}
